# # 1.什么是类，什么是对象，对象和类是什么关系
# 类是一类事物的抽象概念，不是真实存在的
# 对象是某类事物的具体个体，是该类事物的具体表现，实际存在的个体
# 对象是由类生成的，一个类可以有多个对象
# # 2.定义类的关键字是什么
# class
# # 3.类 中一般包含什么
# 类的内容包含：成员变量，成员方法，类变量，类方法等
# # 4.类中的 __init__ 方法的作用是什么
# 创建对象时为对象初始化成员变量
# # 5.类创建对象的格式是什么
# class 类名:
#     成员变量
# # 6.创建名为"Book"的类
# # 成员变量：标题title、作者author和出版年份year
# # 成员方法:
# # get_title 	打印 "书的标题为xx"
# # show	用于打印 "书的标题为xx，作者是xx，出版年份是xx"
# # 创建对象，调用所有成员方法
# class Book:
#     def __init__(self,title,author,year):
#         self.title = title
#         self.author = author
#         self.year = year
#     def get_title(self,title,author,year):
#         print(f'书的标题为{self.title}')
#     def show(self):
#         print(f'书的标题为{self.title},作者是{self.author},出版年份{self.year}')
# a1 = Book('西游记','吴承恩',1999)
# a1.show()
# 7.创建名为"Dog"的类
# 成员变量：名字name、年龄age和品种type
# 成员方法:
# get_type	打印 "品种为xx"
# add_age	 年龄增加1岁
# show	 用于打印该 "狗的名字为xx，年龄为xx，品种为xx"。
# 创建对象，调用所有成员方
# class Dog:
#     def __init__(self,name,age,type):
#         self.name = name
#         self.age = age
#         self.type = type
#     def get_type(self):
#         print(f'品种为{self.type}')
#     def add_age(self):
#         self.age += 1
#     def show(self):
#         print(f'狗的名字为{self.name}，年龄为{self.age}，品种为{self.type}')
# b1 = Dog('中华田园犬',2,'金毛')
# b1.get_type()
# b1.add_age()
# b1.show()
# # 8.创建名为"Employee"的类
# # 成员变量：姓名name、工号num和薪水salary
# # 成员方法:
# # add_salary	有参数为num ，num为增加的薪水，调用这个函数，可以让员工的工资增加 num
# # show		用于打印该 "员工的姓名是xx，工号为xx， 薪水为xx元"。
# # 创建对象，调用所有成员方法
# class Employee:
#     def __init__(self,a,b,c):
#         self.name = a
#         self.num = b
#         self.salary = c
#     def add_salary(self,num):
#         self.salary += num
#     def show(self):
#         print(f'员工的姓名是{self.name}，工号为{self.num}， 薪水为{self.salary}元')
# a1 = Employee('小米',20,100)
# a1.add_salary(50)
# a1.show()
# # 9.创建名为"Product"的类，它具有以下成员变量：名称name、价格price和库存num
# # 成员方法:
# # set_price   带一个参数，可以修改产品的价格price
# # show	  用于打印该"产品的名称为xx，价格为xx元，库存为xx"。
# # 创建对象，调用所有成员方法
# class Product:
#     def __init__(self,a,b,c):
#         self.name = a
#         self.price = b
#         self.num = c
#     def set_price(self,price):
#         self.price = price
#     def show(self):
#         print(f'产品的名称为{self.name},价格为{self.price}元,库存为{self.num}台')
# a1 = Product('笔记本','5999',100)
# a1.set_price(50)
# a1.show()
# # 10.定义一个学生类(Student):
# # 成员变量 姓名 name  年龄 age 体重 weight
# # 成员方法:
# # eat		在方法中打印 "xx 要吃饭"
# # show	在方法中打印  "姓名xx，年龄是xx岁，体重是xx斤"
# # sub		在方法中修改  成员变量weight减少10斤
# # 创建对象，调用所有成员方法
# class Student:
#     def __init__(self,a,b,c):
#         self.name = a
#         self.age = b
#         self.weight = c
#     def eat(self):
#         print(f'{self.name}要吃饭')
#     def show(self):
#         print(f'姓名{self.name}，年龄是{self.age}岁，体重是{self.weight}斤')
#     def sub(self,weight):
#         self.weight = weight
# a1 = Student('王大锤',18,80)
# a1.eat()
# a1.sub(70)
# a1.show()
# # 11.定义一个教师类(Teacher):
# # 成员变量 姓名 name 年龄 age  身高 height 爱好 hobby
# # 成员方法:
# # eat	有一个参数food	在方法中打印	"xx 喜欢吃"+food
# # hit		在方法中打印	10次"xx 打豆豆"
# # show	在方法中打印	"我叫xx，爱好是xx"
# # 创建对象，调用所有成员方法
# class Teacher:
#     def __init__(self,a,b,c,d):
#         self.name = a
#         self.age = b
#         self.height = c
#         self.hobby = d
#     def eat(self,food):
#         print(f'{self.name}喜欢吃{food}')
#     def hit(self):
#         for a in range(10):
#             print(f'{self.name}打豆豆')
#     def show(self):
#         print(f'我叫{self.name}，爱好是{self.hobby}')
# a1 = Teacher('王大锤',18,'180cm','拳击')
# a1.eat('汉堡')
# a1.hit()
# a1.show()
# # 12.定义一个电脑类(Computer)，
# # 成员变量 品牌(brand)，有价格(price)
# # 成员方法 showInfo	如果价格小于9999元，打印 "电脑品牌xx，价钱是 xx 元， 性价比高"，否则打印
# #  "电脑品牌xx，价钱是xx元， 性能强劲"
# # 创建对象，调用所有成员方法
# class Computer:
#     def __init__(self,a,b):
#         self.brand = a
#         self.price = b
#     def showInfo(self):
#         if self.price < '9999':
#             print(f'电脑品牌{self.brand},价钱是{self.price}元,性价比高')
#         else:
#             print(f'电脑品牌{self.brand},价钱是{self.price}元,性能强劲')
# a1 = Computer('华为','99999')
# a1.showInfo()

# 1.创建名为"Student"的类
# 成员变量：姓名name 年龄age 成绩score
# 成员方法：
# show	打印 "学生的姓名为xx，年龄xx，成绩xx"
# is_pass		用于判断该学生是否及格（成绩大于等于60分）及格，打印 "xx的成绩及格" ，否则打印 "xx的成绩不及格"
# 创建对象，调用所有成员方法
# class student:
#     def __init__(self,a,b,c):
#         self.name = a
#         self.age = b
#         self.score = c
#     def show(self):
#         print(f'学生的姓名为{self.name},年龄{self.age},成绩{self.score}')
#     def is_pass(self):
#         if self.score > 60:
#             print(f'{self.name}的成绩及格')
#         else:
#             print(f'{self.name}的成绩不及格')
# a1 = student('小米',18,60)
# a1.show()
# a1.is_pass()


# 2.创建名为"Star"的类:
# 成员变量：姓名name 年龄age 爱好hobby
# 成员方法：
# love		在方法中打印10次	"我喜欢xx"
# show	在方法中打印 	"我叫xx，年龄是xx，爱好是xx"
# 创建对象，调用所有成员方法
# class star:
#     def __init__(self,a,b,c):
#         self.name = a
#         self.age = b
#         self.hobby = c
#     def love(self):
#         for n in range(1,11):
#             print(f'我喜欢{self.name}')
#     def show(self):
#         print(f'我叫{self.name}，年龄是{self.age}，爱好是{self.hobby}')
# a1 = star('小明',18,'打拳击')
# a1.love()
# a1.show()

# 3. 定义一个电脑类(Computer)，
# 成员变量：品牌(brand)  价格(price)
# 成员方法：
# showInfo	    价格小于3000，打印 "电脑品牌xx，价钱是 xx， 移动办公，性价比高"
# 		    价格大于或等于3000，打印 "电脑品牌xx，价钱是 xx，办公游戏，性能不错"
# 创建对象，调用所有成员方法
# class Computer:
#     def __init__(self,a,b):
#         self.brand = a
#         self.price = b
#     def showInfo(self):
#         if self.price < 3000:
#             print(f'电脑品牌{self.brand}，价钱是{self.price}元， 移动办公，性价比高')
#         else:
#             print(f'电脑品牌{self.brand}，价钱是{self.price}元， 办公游戏，性能不错')
# a1 = Computer('华为',3000)
# a1.showInfo()


# 4.创建名为"Car"的类
# 成员变量：品牌brand 颜色color 速度speed
# 成员方法：
# speed_up		有参数为num ，num为增加的速度值，调用这个函数，可以让汽车速度增加了 num
# speed_dow		有参数为num，num为减少的速度值，调用这个函数，可以让汽车速度减少了 num
# speed_show		打印 "当前品牌为xx，颜色为xx，汽车当前的速度为xx 千米/小时"
# 创建对象，调用所有成员方法
# class Car:
#     def __init__(self,a,b,c):
#         self.brand = a
#         self.color = b
#         self.speed = c
#     def speed_up(self,num):
#         self.speed += num
#     def speed_dow(self,num2):
#         self.speed -= num2
#     def speed_show(self):
#         print(f'当前品牌为{self.brand}，颜色为{self.color}，汽车当前的速度为{self.speed} 千米/小时')
# a1 = Car('保时捷','银色',88)
# a1.speed_up(10)
# a1.speed_dow(20)
# a1.speed_show()

# 5. 定义一个圆形Circle类，有成员变量 半径 r
# 成员方法  获取面积 get_area
# 创建两个对象，调用 get_area 进行比较
# 如果第一个圆形的面积大于第二个圆形面积，打印 "第一个面积大"
# 如果第一个圆形的面积小于第二个圆形面积，打印 "第二个面积大"
# 相等，打印 "一样大"
# class Circle:
#     def __init__(self,r,n):
#         self.r = r
#         self.n = n
#     def get_area(self,a):
#         self.a = a
#         if self.r*self.r*self.n > self.a*self.a*self.n:
#             print('第一个面积大')
#         elif self.r * self.r * self.n < self.a * self.a * self.n:
#             print('第二个面积大')
# b1 = Circle(2,3.14)
# b1.get_area(3)

# 6.创建名为"Product"的类，它具有以下成员变量：名称name，价格price和库存num
# 成员方法:
# set_name	带一个参数，功能为修改产品的名称，打印 "商品名xx修改为新商品名xx成功"
# show_name  	打印 "商品名称为xx"
# set_price	  	带一个参数，功能为修改产品的价格price，打印 "xx商品价格修改成功"
# show_price	  打印 "xx商品价格为xx元"
# set_num	  	带一个参数，功能为修改产品的库存num，打印 "xx商品库存修改成功"
# show_num	  	打印 "xx商品库存为num个"
# show_info	  	用于打印该"产品的名称为xx，价格为xx元，库存为xx"。
# 创建对象， name 提神药酒   price 1888 库存 999
# 调用 show_info
# 调用 set_name  修改名称为 九阳神酒
# 调用 set_price   修改价格为 888
# 调用 set_num   修改库存为 99
# 调用 show_name
# 调用 show_price
# 调用 show_num
# 调用 show_info
class Product:
    def __init__(self,a,b,c):
        self.name = a
        self.price = b
        self.num = c
    def set_name(self,d):
        self.d = d
        print(f'商品名{self.name}修改为新商品名{self.d}成功')# show_name  	打印 "商品名称为xx"
    def show_name(self):
        print(f'品名称为{self.name}')# set_price	  	带一个参数，功能为修改产品的价格price，打印 "xx商品价格修改成功"
    def set_price(self,e):
        self.e = e
        print(f'{self.name}商品价格修改为{self.e}')
    def set_num(self,f):   # set_num	  	带一个参数，功能为修改产品的库存num，打印 "xx商品库存修改成功"
        self.f = f
        print(f'{self.name}商品库存修改为{self.f}')
    def show_num(self,g):# show_num	  	打印 "xx商品库存为num个"
        print(f'{self.name}商品库存为{self.num}')
    def show_info(self):   # show_info	  	用于打印该"产品的名称为xx，价格为xx元，库存为xx"。
        print(f'产品的名称为{self.name}，价格为{self.price}元，库存为,{self.num}')
a1 = Product('提神药酒',1888,999)
a1.show_info()              # 调用 show_info
a1.set_name('茅台')               # 调用 set_name  修改名称为 九阳神酒
a1.set_price(888)# 调用 set_price   修改价格为 888
a1.set_num(99)# 调用 set_num   修改库存为 99
a1.show_name()# 调用 show_name
a1.show_num(70)# 调用 show_num
a1.show_info()# 调用 show_info